Recent semiconductor fabrication techniques have provided for the packaging of complex digital circuits for use as building block elements in microcomputer systems. Recent advances in semiconductor technology have provided fabrication techniques that realize a marked increase in digital circuit (AND or OR gates, flip flops, etc.) density on single semiconductor elements or "chips" as they are called. In turn, this increase in circuit density has given rise to the microcomputer system era, an era in which a data handling and/or processing system can be built with a very few number of circuit elements.
These microcomputer systems have been found to be particularly useful in the data processing and digital system art. For example, today's large scale data processing systems are capable of operating at extremely high speeds. Unfortunately, the operating speed can often be limited by the necessity of transferring data and instructions to and from external devices (peripheral units) that connect the data processing system to the outside world. Older systems would often require the host computer of the data processor system to exert complete control over the peripheral unit to effect such data and instruction transfers and to see to proper operation of the peripheral. Today, such control is being built-in to the peripheral device by providing it with microcomputer system circuitry that allows the peripheral to handle much of its own control functions with a minimum of influence from a host processor.
Thus, by providing the peripheral units of a data processing system with "intelligence" via a microcomputer system, the ability of the peripheral to control its own functions is made somewhat easier. Too, the host computer is relieved of many of the peripheral control functions. However, the simplicity and speed with which control operations are implemented become critical. If the overall data processing system with which the peripheral is used is kept waiting for a data or instruction transfer, speed of the overall system is impaired.
In modern data processing systems, data is continuously transferred between the host processor and its peripherals, storage, or terminals, such data often including coded control words that must be assembled or disassembled by the peripheral. Thus, packing or unpacking these coded data words, which may be binary-coded decimal (BCD) or American Standard Code of Information Exchange (ASCII) may be necessary. Typically, such packing and unpacking utilizes a rotation (i.e., a realignment of the bits of the coded work) and merge (logically ANDing the realigned coded word with a mask to pass only the desired bits and inhibit or strip away the unwanted bits) functions. Rotate and compare functions (similar to rotate and merge) are also widely used to compare a number of bits of a control or status data word with a predetermined known. These functions, when implemented in many present microprocessor systems that provide "intelligence" to the peripheral, require complex programming and an inordinate amount of processing time.
Further, errors may be introduced during the reading, writing or actual transmission of the data. Consequently, error control has become an integral part of the design of many of the peripheral units and their host computers. One of the more preferred methods today for error detection involves the addition of one or more bits, called "redundancy" bits, to the information carrying bits of a character or stream of chracters. For example, one method commonly used for error detection is the simple parity check. A far more powerful error detecting method is cyclic redundancy checking (CRC), a relatively complex but far more powerful error detection technique that utilizes formation of a "checking polynomial, numerous shifting, and checks that are made during data transmission. Again, as with the rotate and merge and rotate and compare functions, CRC error checking techniques can be implemented by present microprocessor systems at the expense of processing time.
Peripheral controllers can be construction as an integrated circuit; that is, custom designed to fit the particular characteristics of the data processing system and its interface requirement with the particular peripheral unit. However, production in low quantity of integrated circuits can be exorbitant and, therefore, commercially unattractive. Further, circuit complexity can often be increased to the point where the particular chip becomes "pin limited;" that is, the number of pins necessary to provide the integrated circuit with the appropriate data, instruction and control information can increase to a prohibitive number, in turn greatly increasing production costs and expense to the consumer. Preferably, large scale or very large scale integration should produce a semiconductor package having as few pins as possible. Further still, in order to produce a microprocessor system at a relatively inexpensive cost to the consumer, the system should be able to function in an almost unlimited number of circumstances.
Today's microcomputers are typically fabricated using metal-oxide-silicone (MOS) or bipolar semiconductor fabrication techniques. MOS has the advantage of achieving higher circuit density than bipolar fabricated circuits. However, bipolar circuitry is capable of much higher operating speed--particularly when the circuits are formed using the current-switching technique of emitter-coupled-logic (ECL). Accordingly, if the microcomputer system is to be capable of high performance and high speed, the circuit structure is preferably ECL, if possible.
Today's ECL microcomputer systems are usually constructed using several building block elements that can be thought of as forming essentially two distinct sections: a control section, including a memory containing microinstructions, for controlling operation of the microcomputer system in response to sequences of microinstructions, and a data manipulation section, which includes a processor containing an arithmetic-logic unit (ALU), that performs the required operation (i.e., arithmetic, logical, shifting, etc.) on the data to be processed.
The speed of operation of the processor, and therefore the microcomputer system itself, depends in large part on the architecture of its internal circuitry. Throughput (the time it takes for an instruction to be executed) depends, in part, upon the number of gates data must pass through during its manipulation (instruction execution). Also, operating speed can be increased by combining several operations into one instruction. For example, certain high-speed (ECL) processors available today provide a (one-bit) shift function to be performed with other (logical) operations by placing a shifter on the output of the processor ALU. Thus, a logic operation and a shift (such as may be required in executing a CRC operation) can be performed in one instruction cycle, rather than two or more, and the operating speed of the microcomputer system is thereby increased. However, the shift circuit, being on the output of the ALU, is always in the data path and, when not used, thereby increases the time it takes for the data to pass through the manipulation cycle; that is, overall throughput time is increased.